home *** CD-ROM | disk | FTP | other *** search
- {
- Object-Oriented Archive-viewer: LZH-part
- }
-
- Unit OOAVLzh;
-
- Interface
-
- Uses Dos,OOAV;
-
- Type LFHeader=Record
- Headsize,Headchk :byte;
- HeadID :packed Array[1..5] of char;
- Packsize,Origsize,Filetime:longint;
- Attr :word;
- Filename :string[12];
- f32 :pathstr;
- dt :DateTime;
- end;
-
-
- type PLzhArchive=^TLzhArchive;
- TLzhArchive=object(TGeneralArchive)
- constructor Init;
- procedure FindFirst(var sr:SearchRec);virtual;
- procedure FindNext(var sr:SearchRec);virtual;
- private
- _FHdr:LFHeader;
- _SL:longint;
- procedure GetHeader(var sr:SearchRec);
- end;
-
-
- Implementation
-
-
- constructor TLzhArchive.Init;
- begin
- _SL:=0;
- FillChar(_FHdr,sizeof(_FHdr),0);
- end;
-
-
- procedure TLzhArchive.GetHeader(var sr:SearchRec);
- var nr:word;
- begin
- fillchar(sr,sizeof(sr),0);
- seek(_FArchive,_SL);
- if eof(_FArchive) then
- exit;
- blockread(_FArchive,_FHdr,sizeof(LFHeader),nr);
- if _FHdr.headsize=0 then
- exit;
- inc(_SL,_FHdr.headsize);
- inc(_SL,2);
- inc(_SL,_FHdr.packsize);
- if _FHdr.headsize<>0 then
- UnPackTime(_FHdr.FileTime,_FHdr.DT);
- sr.Name:=_FHdr.FileName;
- sr.Size:=_FHdr.OrigSize;
- sr.Time:=_FHdr.FileTime;
- end;
-
-
- procedure TLzhArchive.FindFirst(var sr:SearchRec);
- begin
- _SL:=0;
- GetHeader(sr);
- end;
-
-
- procedure TLzhArchive.FindNext(var sr:SearchRec);
- begin
- GetHeader(sr);
- end;
-
-
- end.